{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 共享单车订单与天气情况分析\n",
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入相关工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 导入相关的包\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib.style as psl\n",
    "%matplotlib inline\n",
    "plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"]  # 可正常显示中文\n",
    "plt.rcParams[\"axes.unicode_minus\"] = False  # 可正常显示英文\n",
    "plt.rcParams[\"font.size\"]=20  # 设置字体大小"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务一：数据加载"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 加载数据1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>starttime</th>\n",
       "      <th>stoptime</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>from_station_name</th>\n",
       "      <th>to_station_name</th>\n",
       "      <th>from_station_id</th>\n",
       "      <th>to_station_id</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "      <th>birthyear</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>10/13/2014 10:31</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>985.935</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1960.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>10/13/2014 10:32</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>926.375</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1970.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>10/13/2014 10:33</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>883.831</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>1988.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>865.937</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>1977.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>10/13/2014 10:49</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>923.923</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1971.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>10/12/2015 20:41</td>\n",
       "      <td>10/12/2015 20:47</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>377.183</td>\n",
       "      <td>E Pine St &amp; 16th Ave</td>\n",
       "      <td>Summit Ave &amp; E Denny Way</td>\n",
       "      <td>CH-07</td>\n",
       "      <td>CH-01</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1990.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>10/12/2015 20:43</td>\n",
       "      <td>10/12/2015 20:48</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Bellevue Ave &amp; E Pine St</td>\n",
       "      <td>Summit Ave E &amp; E Republican St</td>\n",
       "      <td>CH-12</td>\n",
       "      <td>CH-03</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1978.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>10/12/2015 21:03</td>\n",
       "      <td>10/12/2015 21:06</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Harvard Ave &amp; E Pine St</td>\n",
       "      <td>E Harrison St &amp; Broadway Ave E</td>\n",
       "      <td>CH-09</td>\n",
       "      <td>CH-02</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1989.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>10/12/2015 21:35</td>\n",
       "      <td>10/12/2015 21:41</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Pine St &amp; 9th Ave</td>\n",
       "      <td>3rd Ave &amp; Broad St</td>\n",
       "      <td>SLU-16</td>\n",
       "      <td>BT-01</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>10/12/2015 22:45</td>\n",
       "      <td>10/12/2015 22:51</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>391.885</td>\n",
       "      <td>NE 42nd St &amp; University Way NE</td>\n",
       "      <td>Eastlake Ave E &amp; E Allison St</td>\n",
       "      <td>UD-02</td>\n",
       "      <td>EL-05</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1985.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id         starttime          stoptime    bikeid  tripduration  \\\n",
       "0           431  10/13/2014 10:31  10/13/2014 10:48  SEA00298       985.935   \n",
       "1           432  10/13/2014 10:32  10/13/2014 10:48  SEA00195       926.375   \n",
       "2           433  10/13/2014 10:33  10/13/2014 10:48  SEA00486       883.831   \n",
       "3           434  10/13/2014 10:34  10/13/2014 10:48  SEA00333       865.937   \n",
       "4           435  10/13/2014 10:34  10/13/2014 10:49  SEA00202       923.923   \n",
       "...         ...               ...               ...       ...           ...   \n",
       "142841   156796  10/12/2015 20:41  10/12/2015 20:47  SEA00358       377.183   \n",
       "142842   156797  10/12/2015 20:43  10/12/2015 20:48  SEA00399       303.330   \n",
       "142843   156798  10/12/2015 21:03  10/12/2015 21:06  SEA00204       165.597   \n",
       "142844   156799  10/12/2015 21:35  10/12/2015 21:41  SEA00073       388.576   \n",
       "142845   156800  10/12/2015 22:45  10/12/2015 22:51  SEA00033       391.885   \n",
       "\n",
       "                     from_station_name  \\\n",
       "0                  2nd Ave & Spring St   \n",
       "1                  2nd Ave & Spring St   \n",
       "2                  2nd Ave & Spring St   \n",
       "3                  2nd Ave & Spring St   \n",
       "4                  2nd Ave & Spring St   \n",
       "...                                ...   \n",
       "142841            E Pine St & 16th Ave   \n",
       "142842        Bellevue Ave & E Pine St   \n",
       "142843         Harvard Ave & E Pine St   \n",
       "142844               Pine St & 9th Ave   \n",
       "142845  NE 42nd St & University Way NE   \n",
       "\n",
       "                                          to_station_name from_station_id  \\\n",
       "0       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "1       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "2       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "3       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "4       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "...                                                   ...             ...   \n",
       "142841                           Summit Ave & E Denny Way           CH-07   \n",
       "142842                     Summit Ave E & E Republican St           CH-12   \n",
       "142843                     E Harrison St & Broadway Ave E           CH-09   \n",
       "142844                                 3rd Ave & Broad St          SLU-16   \n",
       "142845                      Eastlake Ave E & E Allison St           UD-02   \n",
       "\n",
       "       to_station_id                usertype  gender  birthyear  \n",
       "0              PS-04           Annual Member    Male     1960.0  \n",
       "1              PS-04           Annual Member    Male     1970.0  \n",
       "2              PS-04           Annual Member  Female     1988.0  \n",
       "3              PS-04           Annual Member  Female     1977.0  \n",
       "4              PS-04           Annual Member    Male     1971.0  \n",
       "...              ...                     ...     ...        ...  \n",
       "142841         CH-01           Annual Member    Male     1990.0  \n",
       "142842         CH-03           Annual Member    Male     1978.0  \n",
       "142843         CH-02           Annual Member    Male     1989.0  \n",
       "142844         BT-01  Short-Term Pass Holder     NaN        NaN  \n",
       "142845         EL-05           Annual Member    Male     1985.0  \n",
       "\n",
       "[142846 rows x 12 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加载共享单车行程订单数据，赋值为df1\n",
    "##################################begin######################################\n",
    "df1 = pd.read_csv(\"trip_data.csv\")\n",
    "###################################end#######################################\n",
    "\n",
    "# 查看共享单车行程订单数据\n",
    "##################################begin######################################\n",
    "df1\n",
    "###################################end#######################################"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 加载数据2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Max_Temperature_F</th>\n",
       "      <th>Mean_Temperature_F</th>\n",
       "      <th>Min_TemperatureF</th>\n",
       "      <th>Max_Dew_Point_F</th>\n",
       "      <th>MeanDew_Point_F</th>\n",
       "      <th>Min_Dewpoint_F</th>\n",
       "      <th>Max_Humidity</th>\n",
       "      <th>Mean_Humidity</th>\n",
       "      <th>Min_Humidity</th>\n",
       "      <th>...</th>\n",
       "      <th>Mean_Sea_Level_Pressure_In</th>\n",
       "      <th>Min_Sea_Level_Pressure_In</th>\n",
       "      <th>Max_Visibility_Miles</th>\n",
       "      <th>Mean_Visibility_Miles</th>\n",
       "      <th>Min_Visibility_Miles</th>\n",
       "      <th>Max_Wind_Speed_MPH</th>\n",
       "      <th>Mean_Wind_Speed_MPH</th>\n",
       "      <th>Max_Gust_Speed_MPH</th>\n",
       "      <th>Precipitation_In</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>71.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>68.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.79</td>\n",
       "      <td>29.65</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>13.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.00</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10/14/2014</td>\n",
       "      <td>63.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>78.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.75</td>\n",
       "      <td>29.54</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>17</td>\n",
       "      <td>0.11</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>10/15/2014</td>\n",
       "      <td>62.0</td>\n",
       "      <td>58.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>67.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.71</td>\n",
       "      <td>29.51</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>18.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>25</td>\n",
       "      <td>0.45</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>10/16/2014</td>\n",
       "      <td>71.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>52.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>36.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.95</td>\n",
       "      <td>29.81</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>-</td>\n",
       "      <td>0.00</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10/17/2014</td>\n",
       "      <td>64.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>87.0</td>\n",
       "      <td>72.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.78</td>\n",
       "      <td>29.73</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>-</td>\n",
       "      <td>0.14</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>10/9/2015</td>\n",
       "      <td>70.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>55.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>77.0</td>\n",
       "      <td>63.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.94</td>\n",
       "      <td>29.90</td>\n",
       "      <td>10.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>-</td>\n",
       "      <td>0.01</td>\n",
       "      <td>Fog , Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>10/10/2015</td>\n",
       "      <td>72.0</td>\n",
       "      <td>66.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>62.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>88.0</td>\n",
       "      <td>79.0</td>\n",
       "      <td>57.0</td>\n",
       "      <td>...</td>\n",
       "      <td>29.75</td>\n",
       "      <td>29.57</td>\n",
       "      <td>10.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>8.0</td>\n",
       "      <td>29</td>\n",
       "      <td>0.77</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>10/11/2015</td>\n",
       "      <td>66.0</td>\n",
       "      <td>60.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>51.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>84.0</td>\n",
       "      <td>69.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>...</td>\n",
       "      <td>30.12</td>\n",
       "      <td>30.00</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>-</td>\n",
       "      <td>0.00</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>68.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>54.0</td>\n",
       "      <td>61.0</td>\n",
       "      <td>53.0</td>\n",
       "      <td>46.0</td>\n",
       "      <td>94.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>59.0</td>\n",
       "      <td>...</td>\n",
       "      <td>30.10</td>\n",
       "      <td>30.05</td>\n",
       "      <td>10.0</td>\n",
       "      <td>7.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>12.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.34</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>...</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>366 rows × 21 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Date  Max_Temperature_F  Mean_Temperature_F  Min_TemperatureF  \\\n",
       "0    10/13/2014               71.0                62.0              54.0   \n",
       "1    10/14/2014               63.0                59.0              55.0   \n",
       "2    10/15/2014               62.0                58.0              54.0   \n",
       "3    10/16/2014               71.0                61.0              52.0   \n",
       "4    10/17/2014               64.0                60.0              57.0   \n",
       "..          ...                ...                 ...               ...   \n",
       "361   10/9/2015               70.0                62.0              55.0   \n",
       "362  10/10/2015               72.0                66.0              60.0   \n",
       "363  10/11/2015               66.0                60.0              54.0   \n",
       "364  10/12/2015               68.0                61.0              54.0   \n",
       "365         NaN                NaN                 NaN               NaN   \n",
       "\n",
       "     Max_Dew_Point_F  MeanDew_Point_F  Min_Dewpoint_F  Max_Humidity  \\\n",
       "0               55.0             51.0            46.0          87.0   \n",
       "1               52.0             51.0            50.0          88.0   \n",
       "2               53.0             50.0            46.0          87.0   \n",
       "3               49.0             46.0            42.0          83.0   \n",
       "4               55.0             51.0            41.0          87.0   \n",
       "..               ...              ...             ...           ...   \n",
       "361             59.0             55.0            50.0          94.0   \n",
       "362             62.0             57.0            51.0          88.0   \n",
       "363             51.0             49.0            46.0          84.0   \n",
       "364             61.0             53.0            46.0          94.0   \n",
       "365              NaN              NaN             NaN           NaN   \n",
       "\n",
       "     Mean_Humidity   Min_Humidity   ...  Mean_Sea_Level_Pressure_In   \\\n",
       "0              68.0           46.0  ...                        29.79   \n",
       "1              78.0           63.0  ...                        29.75   \n",
       "2              77.0           67.0  ...                        29.71   \n",
       "3              61.0           36.0  ...                        29.95   \n",
       "4              72.0           46.0  ...                        29.78   \n",
       "..              ...            ...  ...                          ...   \n",
       "361            77.0           63.0  ...                        29.94   \n",
       "362            79.0           57.0  ...                        29.75   \n",
       "363            69.0           50.0  ...                        30.12   \n",
       "364            76.0           59.0  ...                        30.10   \n",
       "365             NaN            NaN  ...                          NaN   \n",
       "\n",
       "     Min_Sea_Level_Pressure_In   Max_Visibility_Miles   \\\n",
       "0                         29.65                   10.0   \n",
       "1                         29.54                   10.0   \n",
       "2                         29.51                   10.0   \n",
       "3                         29.81                   10.0   \n",
       "4                         29.73                   10.0   \n",
       "..                          ...                    ...   \n",
       "361                       29.90                   10.0   \n",
       "362                       29.57                   10.0   \n",
       "363                       30.00                   10.0   \n",
       "364                       30.05                   10.0   \n",
       "365                         NaN                    NaN   \n",
       "\n",
       "     Mean_Visibility_Miles   Min_Visibility_Miles   Max_Wind_Speed_MPH   \\\n",
       "0                      10.0                    4.0                 13.0   \n",
       "1                       9.0                    3.0                 10.0   \n",
       "2                       9.0                    3.0                 18.0   \n",
       "3                      10.0                   10.0                  9.0   \n",
       "4                      10.0                    6.0                  8.0   \n",
       "..                      ...                    ...                  ...   \n",
       "361                     7.0                    0.0                  9.0   \n",
       "362                     8.0                    3.0                 16.0   \n",
       "363                    10.0                   10.0                 10.0   \n",
       "364                     7.0                    2.0                 12.0   \n",
       "365                     NaN                    NaN                  NaN   \n",
       "\n",
       "     Mean_Wind_Speed_MPH   Max_Gust_Speed_MPH Precipitation_In       Events  \n",
       "0                     4.0                  21              0.00        Rain  \n",
       "1                     5.0                  17              0.11        Rain  \n",
       "2                     7.0                  25              0.45        Rain  \n",
       "3                     4.0                   -              0.00        Rain  \n",
       "4                     3.0                   -              0.14        Rain  \n",
       "..                    ...                 ...               ...         ...  \n",
       "361                   4.0                   -              0.01  Fog , Rain  \n",
       "362                   8.0                  29              0.77        Rain  \n",
       "363                   5.0                   -              0.00         NaN  \n",
       "364                   6.0                  21              0.34        Rain  \n",
       "365                   NaN                 NaN               NaN         NaN  \n",
       "\n",
       "[366 rows x 21 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 加载天气数据，赋值为df2\n",
    "##################################begin######################################\n",
    "df2 = pd.read_csv(\"weather_data.csv\")\n",
    "###################################end#######################################\n",
    "\n",
    "# 查看天气数据\n",
    "##################################begin######################################\n",
    "df2\n",
    "###################################end#######################################"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务二：数据清洗"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据概览"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 142846 entries, 0 to 142845\n",
      "Data columns (total 12 columns):\n",
      " #   Column             Non-Null Count   Dtype  \n",
      "---  ------             --------------   -----  \n",
      " 0   trip_id            142846 non-null  int64  \n",
      " 1   starttime          142846 non-null  object \n",
      " 2   stoptime           142846 non-null  object \n",
      " 3   bikeid             142846 non-null  object \n",
      " 4   tripduration       142846 non-null  float64\n",
      " 5   from_station_name  142846 non-null  object \n",
      " 6   to_station_name    142846 non-null  object \n",
      " 7   from_station_id    142846 non-null  object \n",
      " 8   to_station_id      142846 non-null  object \n",
      " 9   usertype           142846 non-null  object \n",
      " 10  gender             87360 non-null   object \n",
      " 11  birthyear          87360 non-null   float64\n",
      "dtypes: float64(2), int64(1), object(9)\n",
      "memory usage: 13.1+ MB\n"
     ]
    }
   ],
   "source": [
    "# 使用df.info()函数，对df1进行概览，展示出各列名称、非空值数量、类型。\n",
    "##################################begin######################################\n",
    "df1.info()\n",
    "###################################end#######################################"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Max_Temperature_F</th>\n",
       "      <th>Mean_Temperature_F</th>\n",
       "      <th>Min_TemperatureF</th>\n",
       "      <th>Max_Dew_Point_F</th>\n",
       "      <th>MeanDew_Point_F</th>\n",
       "      <th>Min_Dewpoint_F</th>\n",
       "      <th>Max_Humidity</th>\n",
       "      <th>Mean_Humidity</th>\n",
       "      <th>Min_Humidity</th>\n",
       "      <th>Max_Sea_Level_Pressure_In</th>\n",
       "      <th>Mean_Sea_Level_Pressure_In</th>\n",
       "      <th>Min_Sea_Level_Pressure_In</th>\n",
       "      <th>Max_Visibility_Miles</th>\n",
       "      <th>Mean_Visibility_Miles</th>\n",
       "      <th>Min_Visibility_Miles</th>\n",
       "      <th>Max_Wind_Speed_MPH</th>\n",
       "      <th>Mean_Wind_Speed_MPH</th>\n",
       "      <th>Precipitation_In</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.0</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "      <td>365.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>65.484932</td>\n",
       "      <td>57.895890</td>\n",
       "      <td>50.698630</td>\n",
       "      <td>48.397260</td>\n",
       "      <td>44.854795</td>\n",
       "      <td>40.605479</td>\n",
       "      <td>80.547945</td>\n",
       "      <td>65.032877</td>\n",
       "      <td>47.468493</td>\n",
       "      <td>30.127123</td>\n",
       "      <td>30.044849</td>\n",
       "      <td>29.955151</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.389041</td>\n",
       "      <td>7.232877</td>\n",
       "      <td>10.553425</td>\n",
       "      <td>4.180822</td>\n",
       "      <td>0.087233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>12.339649</td>\n",
       "      <td>10.432415</td>\n",
       "      <td>9.549589</td>\n",
       "      <td>7.673881</td>\n",
       "      <td>8.307832</td>\n",
       "      <td>9.265793</td>\n",
       "      <td>8.891039</td>\n",
       "      <td>12.647113</td>\n",
       "      <td>16.391073</td>\n",
       "      <td>0.181460</td>\n",
       "      <td>0.188827</td>\n",
       "      <td>0.206591</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1.225593</td>\n",
       "      <td>3.356642</td>\n",
       "      <td>3.541826</td>\n",
       "      <td>2.493985</td>\n",
       "      <td>0.220331</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>39.000000</td>\n",
       "      <td>33.000000</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>40.000000</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>15.000000</td>\n",
       "      <td>29.470000</td>\n",
       "      <td>29.310000</td>\n",
       "      <td>29.140000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>55.000000</td>\n",
       "      <td>50.000000</td>\n",
       "      <td>44.000000</td>\n",
       "      <td>45.000000</td>\n",
       "      <td>41.000000</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>75.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>30.010000</td>\n",
       "      <td>29.930000</td>\n",
       "      <td>29.850000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>9.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>64.000000</td>\n",
       "      <td>58.000000</td>\n",
       "      <td>52.000000</td>\n",
       "      <td>50.000000</td>\n",
       "      <td>46.000000</td>\n",
       "      <td>42.000000</td>\n",
       "      <td>82.000000</td>\n",
       "      <td>67.000000</td>\n",
       "      <td>46.000000</td>\n",
       "      <td>30.110000</td>\n",
       "      <td>30.040000</td>\n",
       "      <td>29.960000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>75.000000</td>\n",
       "      <td>66.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>54.000000</td>\n",
       "      <td>50.000000</td>\n",
       "      <td>47.000000</td>\n",
       "      <td>87.000000</td>\n",
       "      <td>76.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>30.240000</td>\n",
       "      <td>30.160000</td>\n",
       "      <td>30.070000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.050000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>98.000000</td>\n",
       "      <td>83.000000</td>\n",
       "      <td>70.000000</td>\n",
       "      <td>62.000000</td>\n",
       "      <td>59.000000</td>\n",
       "      <td>57.000000</td>\n",
       "      <td>100.000000</td>\n",
       "      <td>88.000000</td>\n",
       "      <td>83.000000</td>\n",
       "      <td>30.860000</td>\n",
       "      <td>30.810000</td>\n",
       "      <td>30.750000</td>\n",
       "      <td>10.0</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>26.000000</td>\n",
       "      <td>14.000000</td>\n",
       "      <td>2.200000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       Max_Temperature_F  Mean_Temperature_F  Min_TemperatureF  \\\n",
       "count         365.000000          365.000000        365.000000   \n",
       "mean           65.484932           57.895890         50.698630   \n",
       "std            12.339649           10.432415          9.549589   \n",
       "min            39.000000           33.000000         26.000000   \n",
       "25%            55.000000           50.000000         44.000000   \n",
       "50%            64.000000           58.000000         52.000000   \n",
       "75%            75.000000           66.000000         57.000000   \n",
       "max            98.000000           83.000000         70.000000   \n",
       "\n",
       "       Max_Dew_Point_F  MeanDew_Point_F  Min_Dewpoint_F  Max_Humidity  \\\n",
       "count       365.000000       365.000000      365.000000    365.000000   \n",
       "mean         48.397260        44.854795       40.605479     80.547945   \n",
       "std           7.673881         8.307832        9.265793      8.891039   \n",
       "min          10.000000         4.000000        1.000000     40.000000   \n",
       "25%          45.000000        41.000000       36.000000     75.000000   \n",
       "50%          50.000000        46.000000       42.000000     82.000000   \n",
       "75%          54.000000        50.000000       47.000000     87.000000   \n",
       "max          62.000000        59.000000       57.000000    100.000000   \n",
       "\n",
       "       Mean_Humidity   Min_Humidity   Max_Sea_Level_Pressure_In   \\\n",
       "count      365.000000     365.000000                  365.000000   \n",
       "mean        65.032877      47.468493                   30.127123   \n",
       "std         12.647113      16.391073                    0.181460   \n",
       "min         24.000000      15.000000                   29.470000   \n",
       "25%         57.000000      35.000000                   30.010000   \n",
       "50%         67.000000      46.000000                   30.110000   \n",
       "75%         76.000000      62.000000                   30.240000   \n",
       "max         88.000000      83.000000                   30.860000   \n",
       "\n",
       "       Mean_Sea_Level_Pressure_In   Min_Sea_Level_Pressure_In   \\\n",
       "count                   365.000000                  365.000000   \n",
       "mean                     30.044849                   29.955151   \n",
       "std                       0.188827                    0.206591   \n",
       "min                      29.310000                   29.140000   \n",
       "25%                      29.930000                   29.850000   \n",
       "50%                      30.040000                   29.960000   \n",
       "75%                      30.160000                   30.070000   \n",
       "max                      30.810000                   30.750000   \n",
       "\n",
       "       Max_Visibility_Miles   Mean_Visibility_Miles   Min_Visibility_Miles   \\\n",
       "count                  365.0              365.000000             365.000000   \n",
       "mean                    10.0                9.389041               7.232877   \n",
       "std                      0.0                1.225593               3.356642   \n",
       "min                     10.0                3.000000               0.000000   \n",
       "25%                     10.0                9.000000               4.000000   \n",
       "50%                     10.0               10.000000              10.000000   \n",
       "75%                     10.0               10.000000              10.000000   \n",
       "max                     10.0               10.000000              10.000000   \n",
       "\n",
       "       Max_Wind_Speed_MPH   Mean_Wind_Speed_MPH   Precipitation_In   \n",
       "count           365.000000            365.000000         365.000000  \n",
       "mean             10.553425              4.180822           0.087233  \n",
       "std               3.541826              2.493985           0.220331  \n",
       "min               4.000000              0.000000           0.000000  \n",
       "25%               8.000000              2.000000           0.000000  \n",
       "50%              10.000000              4.000000           0.000000  \n",
       "75%              12.000000              6.000000           0.050000  \n",
       "max              26.000000             14.000000           2.200000  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用df.describe()函数，对df2进行概览，展示出各列均值、方差、最大值最小值等信息。\n",
    "df2.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 查看数据列名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['trip_id', 'starttime', 'stoptime', 'bikeid', 'tripduration',\n",
       "       'from_station_name', 'to_station_name', 'from_station_id',\n",
       "       'to_station_id', 'usertype', 'gender', 'birthyear'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据df1的所有列的名字\n",
    "df1.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['Date', 'Max_Temperature_F', 'Mean_Temperature_F', 'Min_TemperatureF',\n",
       "       'Max_Dew_Point_F', 'MeanDew_Point_F', 'Min_Dewpoint_F', 'Max_Humidity',\n",
       "       'Mean_Humidity ', 'Min_Humidity ', 'Max_Sea_Level_Pressure_In ',\n",
       "       'Mean_Sea_Level_Pressure_In ', 'Min_Sea_Level_Pressure_In ',\n",
       "       'Max_Visibility_Miles ', 'Mean_Visibility_Miles ',\n",
       "       'Min_Visibility_Miles ', 'Max_Wind_Speed_MPH ', 'Mean_Wind_Speed_MPH ',\n",
       "       'Max_Gust_Speed_MPH', 'Precipitation_In ', 'Events'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看数据df2的所有列的名字\n",
    "df2.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 按列筛选数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>starttime</th>\n",
       "      <th>stoptime</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>from_station_name</th>\n",
       "      <th>to_station_name</th>\n",
       "      <th>from_station_id</th>\n",
       "      <th>to_station_id</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "      <th>birthyear</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>10/13/2014 10:31</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>985.935</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1960.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>10/13/2014 10:32</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>926.375</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1970.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>10/13/2014 10:33</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>883.831</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>1988.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>10/13/2014 10:48</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>865.937</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>1977.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>10/13/2014 10:49</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>923.923</td>\n",
       "      <td>2nd Ave &amp; Spring St</td>\n",
       "      <td>Occidental Park / Occidental Ave S &amp; S Washing...</td>\n",
       "      <td>CBD-06</td>\n",
       "      <td>PS-04</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1971.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>10/12/2015 20:41</td>\n",
       "      <td>10/12/2015 20:47</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>377.183</td>\n",
       "      <td>E Pine St &amp; 16th Ave</td>\n",
       "      <td>Summit Ave &amp; E Denny Way</td>\n",
       "      <td>CH-07</td>\n",
       "      <td>CH-01</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1990.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>10/12/2015 20:43</td>\n",
       "      <td>10/12/2015 20:48</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Bellevue Ave &amp; E Pine St</td>\n",
       "      <td>Summit Ave E &amp; E Republican St</td>\n",
       "      <td>CH-12</td>\n",
       "      <td>CH-03</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1978.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>10/12/2015 21:03</td>\n",
       "      <td>10/12/2015 21:06</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Harvard Ave &amp; E Pine St</td>\n",
       "      <td>E Harrison St &amp; Broadway Ave E</td>\n",
       "      <td>CH-09</td>\n",
       "      <td>CH-02</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1989.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>10/12/2015 21:35</td>\n",
       "      <td>10/12/2015 21:41</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Pine St &amp; 9th Ave</td>\n",
       "      <td>3rd Ave &amp; Broad St</td>\n",
       "      <td>SLU-16</td>\n",
       "      <td>BT-01</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>10/12/2015 22:45</td>\n",
       "      <td>10/12/2015 22:51</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>391.885</td>\n",
       "      <td>NE 42nd St &amp; University Way NE</td>\n",
       "      <td>Eastlake Ave E &amp; E Allison St</td>\n",
       "      <td>UD-02</td>\n",
       "      <td>EL-05</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>1985.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 12 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id         starttime          stoptime    bikeid  tripduration  \\\n",
       "0           431  10/13/2014 10:31  10/13/2014 10:48  SEA00298       985.935   \n",
       "1           432  10/13/2014 10:32  10/13/2014 10:48  SEA00195       926.375   \n",
       "2           433  10/13/2014 10:33  10/13/2014 10:48  SEA00486       883.831   \n",
       "3           434  10/13/2014 10:34  10/13/2014 10:48  SEA00333       865.937   \n",
       "4           435  10/13/2014 10:34  10/13/2014 10:49  SEA00202       923.923   \n",
       "...         ...               ...               ...       ...           ...   \n",
       "142841   156796  10/12/2015 20:41  10/12/2015 20:47  SEA00358       377.183   \n",
       "142842   156797  10/12/2015 20:43  10/12/2015 20:48  SEA00399       303.330   \n",
       "142843   156798  10/12/2015 21:03  10/12/2015 21:06  SEA00204       165.597   \n",
       "142844   156799  10/12/2015 21:35  10/12/2015 21:41  SEA00073       388.576   \n",
       "142845   156800  10/12/2015 22:45  10/12/2015 22:51  SEA00033       391.885   \n",
       "\n",
       "                     from_station_name  \\\n",
       "0                  2nd Ave & Spring St   \n",
       "1                  2nd Ave & Spring St   \n",
       "2                  2nd Ave & Spring St   \n",
       "3                  2nd Ave & Spring St   \n",
       "4                  2nd Ave & Spring St   \n",
       "...                                ...   \n",
       "142841            E Pine St & 16th Ave   \n",
       "142842        Bellevue Ave & E Pine St   \n",
       "142843         Harvard Ave & E Pine St   \n",
       "142844               Pine St & 9th Ave   \n",
       "142845  NE 42nd St & University Way NE   \n",
       "\n",
       "                                          to_station_name from_station_id  \\\n",
       "0       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "1       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "2       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "3       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "4       Occidental Park / Occidental Ave S & S Washing...          CBD-06   \n",
       "...                                                   ...             ...   \n",
       "142841                           Summit Ave & E Denny Way           CH-07   \n",
       "142842                     Summit Ave E & E Republican St           CH-12   \n",
       "142843                     E Harrison St & Broadway Ave E           CH-09   \n",
       "142844                                 3rd Ave & Broad St          SLU-16   \n",
       "142845                      Eastlake Ave E & E Allison St           UD-02   \n",
       "\n",
       "       to_station_id                usertype  gender  birthyear  \n",
       "0              PS-04           Annual Member    Male     1960.0  \n",
       "1              PS-04           Annual Member    Male     1970.0  \n",
       "2              PS-04           Annual Member  Female     1988.0  \n",
       "3              PS-04           Annual Member  Female     1977.0  \n",
       "4              PS-04           Annual Member    Male     1971.0  \n",
       "...              ...                     ...     ...        ...  \n",
       "142841         CH-01           Annual Member    Male     1990.0  \n",
       "142842         CH-03           Annual Member    Male     1978.0  \n",
       "142843         CH-02           Annual Member    Male     1989.0  \n",
       "142844         BT-01  Short-Term Pass Holder     NaN        NaN  \n",
       "142845         EL-05           Annual Member    Male     1985.0  \n",
       "\n",
       "[142846 rows x 12 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>starttime</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>10/13/2014 10:31</td>\n",
       "      <td>985.935</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>10/13/2014 10:32</td>\n",
       "      <td>926.375</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>10/13/2014 10:33</td>\n",
       "      <td>883.831</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>865.937</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>923.923</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>10/12/2015 20:41</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>10/12/2015 20:43</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>10/12/2015 21:03</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>10/12/2015 21:35</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>10/12/2015 22:45</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid         starttime  tripduration  \\\n",
       "0           431  SEA00298  10/13/2014 10:31       985.935   \n",
       "1           432  SEA00195  10/13/2014 10:32       926.375   \n",
       "2           433  SEA00486  10/13/2014 10:33       883.831   \n",
       "3           434  SEA00333  10/13/2014 10:34       865.937   \n",
       "4           435  SEA00202  10/13/2014 10:34       923.923   \n",
       "...         ...       ...               ...           ...   \n",
       "142841   156796  SEA00358  10/12/2015 20:41       377.183   \n",
       "142842   156797  SEA00399  10/12/2015 20:43       303.330   \n",
       "142843   156798  SEA00204  10/12/2015 21:03       165.597   \n",
       "142844   156799  SEA00073  10/12/2015 21:35       388.576   \n",
       "142845   156800  SEA00033  10/12/2015 22:45       391.885   \n",
       "\n",
       "                      usertype  gender  \n",
       "0                Annual Member    Male  \n",
       "1                Annual Member    Male  \n",
       "2                Annual Member  Female  \n",
       "3                Annual Member  Female  \n",
       "4                Annual Member    Male  \n",
       "...                        ...     ...  \n",
       "142841           Annual Member    Male  \n",
       "142842           Annual Member    Male  \n",
       "142843           Annual Member    Male  \n",
       "142844  Short-Term Pass Holder     NaN  \n",
       "142845           Annual Member    Male  \n",
       "\n",
       "[142846 rows x 6 columns]"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns1 = ['trip_id', 'bikeid', 'starttime', 'tripduration', 'usertype', 'gender']\n",
    "# 使用columns1列表筛选df1的列，赋值给df1\n",
    "##################################begin######################################\n",
    "df1 = df1[columns1]\n",
    "###################################end#######################################\n",
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10/14/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>10/15/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>10/16/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10/17/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>10/9/2015</td>\n",
       "      <td>Fog , Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>10/10/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>10/11/2015</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>366 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Date      Events\n",
       "0    10/13/2014        Rain\n",
       "1    10/14/2014        Rain\n",
       "2    10/15/2014        Rain\n",
       "3    10/16/2014        Rain\n",
       "4    10/17/2014        Rain\n",
       "..          ...         ...\n",
       "361   10/9/2015  Fog , Rain\n",
       "362  10/10/2015        Rain\n",
       "363  10/11/2015         NaN\n",
       "364  10/12/2015        Rain\n",
       "365         NaN         NaN\n",
       "\n",
       "[366 rows x 2 columns]"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "columns2 = ['Date', 'Events']\n",
    "df2 = df2[columns2]\n",
    "df2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据合并"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10/14/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>10/15/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>10/16/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10/17/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>10/9/2015</td>\n",
       "      <td>Fog , Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>10/10/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>10/11/2015</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>366 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Date      Events\n",
       "0    10/13/2014        Rain\n",
       "1    10/14/2014        Rain\n",
       "2    10/15/2014        Rain\n",
       "3    10/16/2014        Rain\n",
       "4    10/17/2014        Rain\n",
       "..          ...         ...\n",
       "361   10/9/2015  Fog , Rain\n",
       "362  10/10/2015        Rain\n",
       "363  10/11/2015         NaN\n",
       "364  10/12/2015        Rain\n",
       "365         NaN         NaN\n",
       "\n",
       "[366 rows x 2 columns]"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>starttime</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>10/13/2014 10:31</td>\n",
       "      <td>985.935</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>10/13/2014 10:32</td>\n",
       "      <td>926.375</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>10/13/2014 10:33</td>\n",
       "      <td>883.831</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>865.937</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>10/13/2014 10:34</td>\n",
       "      <td>923.923</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>10/12/2015 20:41</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>10/12/2015 20:43</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>10/12/2015 21:03</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>10/12/2015 21:35</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>10/12/2015 22:45</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid         starttime  tripduration  \\\n",
       "0           431  SEA00298  10/13/2014 10:31       985.935   \n",
       "1           432  SEA00195  10/13/2014 10:32       926.375   \n",
       "2           433  SEA00486  10/13/2014 10:33       883.831   \n",
       "3           434  SEA00333  10/13/2014 10:34       865.937   \n",
       "4           435  SEA00202  10/13/2014 10:34       923.923   \n",
       "...         ...       ...               ...           ...   \n",
       "142841   156796  SEA00358  10/12/2015 20:41       377.183   \n",
       "142842   156797  SEA00399  10/12/2015 20:43       303.330   \n",
       "142843   156798  SEA00204  10/12/2015 21:03       165.597   \n",
       "142844   156799  SEA00073  10/12/2015 21:35       388.576   \n",
       "142845   156800  SEA00033  10/12/2015 22:45       391.885   \n",
       "\n",
       "                      usertype  gender  \n",
       "0                Annual Member    Male  \n",
       "1                Annual Member    Male  \n",
       "2                Annual Member  Female  \n",
       "3                Annual Member  Female  \n",
       "4                Annual Member    Male  \n",
       "...                        ...     ...  \n",
       "142841           Annual Member    Male  \n",
       "142842           Annual Member    Male  \n",
       "142843           Annual Member    Male  \n",
       "142844  Short-Term Pass Holder     NaN  \n",
       "142845           Annual Member    Male  \n",
       "\n",
       "[142846 rows x 6 columns]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10/14/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>10/15/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>10/16/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>10/17/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>361</th>\n",
       "      <td>10/9/2015</td>\n",
       "      <td>Fog , Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>362</th>\n",
       "      <td>10/10/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>363</th>\n",
       "      <td>10/11/2015</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>364</th>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>365</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>366 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           Date      Events\n",
       "0    10/13/2014        Rain\n",
       "1    10/14/2014        Rain\n",
       "2    10/15/2014        Rain\n",
       "3    10/16/2014        Rain\n",
       "4    10/17/2014        Rain\n",
       "..          ...         ...\n",
       "361   10/9/2015  Fog , Rain\n",
       "362  10/10/2015        Rain\n",
       "363  10/11/2015         NaN\n",
       "364  10/12/2015        Rain\n",
       "365         NaN         NaN\n",
       "\n",
       "[366 rows x 2 columns]"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_984\\38117364.py:2: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  df1[\"starttime\"] = df1[\"starttime\"].str.split(\" \").str[0]\n"
     ]
    }
   ],
   "source": [
    "# 去除第一个表格的时间部分\n",
    "df1[\"starttime\"] = df1[\"starttime\"].str.split(\" \").str[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>starttime</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>985.935</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>926.375</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>883.831</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>865.937</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>923.923</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid   starttime  tripduration                usertype  \\\n",
       "0           431  SEA00298  10/13/2014       985.935           Annual Member   \n",
       "1           432  SEA00195  10/13/2014       926.375           Annual Member   \n",
       "2           433  SEA00486  10/13/2014       883.831           Annual Member   \n",
       "3           434  SEA00333  10/13/2014       865.937           Annual Member   \n",
       "4           435  SEA00202  10/13/2014       923.923           Annual Member   \n",
       "...         ...       ...         ...           ...                     ...   \n",
       "142841   156796  SEA00358  10/12/2015       377.183           Annual Member   \n",
       "142842   156797  SEA00399  10/12/2015       303.330           Annual Member   \n",
       "142843   156798  SEA00204  10/12/2015       165.597           Annual Member   \n",
       "142844   156799  SEA00073  10/12/2015       388.576  Short-Term Pass Holder   \n",
       "142845   156800  SEA00033  10/12/2015       391.885           Annual Member   \n",
       "\n",
       "        gender  \n",
       "0         Male  \n",
       "1         Male  \n",
       "2       Female  \n",
       "3       Female  \n",
       "4         Male  \n",
       "...        ...  \n",
       "142841    Male  \n",
       "142842    Male  \n",
       "142843    Male  \n",
       "142844     NaN  \n",
       "142845    Male  \n",
       "\n",
       "[142846 rows x 6 columns]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>starttime</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>985.935</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>926.375</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>883.831</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>865.937</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>923.923</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 8 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid   starttime  tripduration                usertype  \\\n",
       "0           431  SEA00298  10/13/2014       985.935           Annual Member   \n",
       "1           432  SEA00195  10/13/2014       926.375           Annual Member   \n",
       "2           433  SEA00486  10/13/2014       883.831           Annual Member   \n",
       "3           434  SEA00333  10/13/2014       865.937           Annual Member   \n",
       "4           435  SEA00202  10/13/2014       923.923           Annual Member   \n",
       "...         ...       ...         ...           ...                     ...   \n",
       "142841   156796  SEA00358  10/12/2015       377.183           Annual Member   \n",
       "142842   156797  SEA00399  10/12/2015       303.330           Annual Member   \n",
       "142843   156798  SEA00204  10/12/2015       165.597           Annual Member   \n",
       "142844   156799  SEA00073  10/12/2015       388.576  Short-Term Pass Holder   \n",
       "142845   156800  SEA00033  10/12/2015       391.885           Annual Member   \n",
       "\n",
       "        gender        Date Events  \n",
       "0         Male  10/13/2014   Rain  \n",
       "1         Male  10/13/2014   Rain  \n",
       "2       Female  10/13/2014   Rain  \n",
       "3       Female  10/13/2014   Rain  \n",
       "4         Male  10/13/2014   Rain  \n",
       "...        ...         ...    ...  \n",
       "142841    Male  10/12/2015   Rain  \n",
       "142842    Male  10/12/2015   Rain  \n",
       "142843    Male  10/12/2015   Rain  \n",
       "142844     NaN  10/12/2015   Rain  \n",
       "142845    Male  10/12/2015   Rain  \n",
       "\n",
       "[142846 rows x 8 columns]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用pandas相关方法按日期将df1和df2合并并赋值给变量df，参数为(df1,df2,\"left\",left_on=\"starttime\",right_on=\"Date\")\n",
    "##################################begin######################################\n",
    "df = pd.merge(left=df1, right=df2, how=\"left\", left_on=\"starttime\", right_on=\"Date\")\n",
    "###################################end#######################################\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid  tripduration                usertype gender  \\\n",
       "142841   156796  SEA00358       377.183           Annual Member   Male   \n",
       "142842   156797  SEA00399       303.330           Annual Member   Male   \n",
       "142843   156798  SEA00204       165.597           Annual Member   Male   \n",
       "142844   156799  SEA00073       388.576  Short-Term Pass Holder    NaN   \n",
       "142845   156800  SEA00033       391.885           Annual Member   Male   \n",
       "\n",
       "              Date Events  \n",
       "142841  10/12/2015   Rain  \n",
       "142842  10/12/2015   Rain  \n",
       "142843  10/12/2015   Rain  \n",
       "142844  10/12/2015   Rain  \n",
       "142845  10/12/2015   Rain  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将重复列“starttime”剔除\n",
    "df = df.drop(columns=[\"starttime\"])\n",
    "\n",
    "# 查看最后5行数据\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据重命名"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>trip_id</th>\n",
       "      <th>bikeid</th>\n",
       "      <th>tripduration</th>\n",
       "      <th>usertype</th>\n",
       "      <th>gender</th>\n",
       "      <th>Date</th>\n",
       "      <th>Events</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>431</td>\n",
       "      <td>SEA00298</td>\n",
       "      <td>985.935</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>432</td>\n",
       "      <td>SEA00195</td>\n",
       "      <td>926.375</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>433</td>\n",
       "      <td>SEA00486</td>\n",
       "      <td>883.831</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>434</td>\n",
       "      <td>SEA00333</td>\n",
       "      <td>865.937</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Female</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>435</td>\n",
       "      <td>SEA00202</td>\n",
       "      <td>923.923</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/13/2014</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>142846 rows × 7 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "        trip_id    bikeid  tripduration                usertype  gender  \\\n",
       "0           431  SEA00298       985.935           Annual Member    Male   \n",
       "1           432  SEA00195       926.375           Annual Member    Male   \n",
       "2           433  SEA00486       883.831           Annual Member  Female   \n",
       "3           434  SEA00333       865.937           Annual Member  Female   \n",
       "4           435  SEA00202       923.923           Annual Member    Male   \n",
       "...         ...       ...           ...                     ...     ...   \n",
       "142841   156796  SEA00358       377.183           Annual Member    Male   \n",
       "142842   156797  SEA00399       303.330           Annual Member    Male   \n",
       "142843   156798  SEA00204       165.597           Annual Member    Male   \n",
       "142844   156799  SEA00073       388.576  Short-Term Pass Holder     NaN   \n",
       "142845   156800  SEA00033       391.885           Annual Member    Male   \n",
       "\n",
       "              Date Events  \n",
       "0       10/13/2014   Rain  \n",
       "1       10/13/2014   Rain  \n",
       "2       10/13/2014   Rain  \n",
       "3       10/13/2014   Rain  \n",
       "4       10/13/2014   Rain  \n",
       "...            ...    ...  \n",
       "142841  10/12/2015   Rain  \n",
       "142842  10/12/2015   Rain  \n",
       "142843  10/12/2015   Rain  \n",
       "142844  10/12/2015   Rain  \n",
       "142845  10/12/2015   Rain  \n",
       "\n",
       "[142846 rows x 7 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>行程id</th>\n",
       "      <th>共享单车id</th>\n",
       "      <th>时长</th>\n",
       "      <th>用户类别</th>\n",
       "      <th>性别</th>\n",
       "      <th>日期</th>\n",
       "      <th>天气</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>142841</th>\n",
       "      <td>156796</td>\n",
       "      <td>SEA00358</td>\n",
       "      <td>377.183</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142842</th>\n",
       "      <td>156797</td>\n",
       "      <td>SEA00399</td>\n",
       "      <td>303.330</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142843</th>\n",
       "      <td>156798</td>\n",
       "      <td>SEA00204</td>\n",
       "      <td>165.597</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142844</th>\n",
       "      <td>156799</td>\n",
       "      <td>SEA00073</td>\n",
       "      <td>388.576</td>\n",
       "      <td>Short-Term Pass Holder</td>\n",
       "      <td>NaN</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>142845</th>\n",
       "      <td>156800</td>\n",
       "      <td>SEA00033</td>\n",
       "      <td>391.885</td>\n",
       "      <td>Annual Member</td>\n",
       "      <td>Male</td>\n",
       "      <td>10/12/2015</td>\n",
       "      <td>Rain</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          行程id    共享单车id       时长                    用户类别    性别          日期  \\\n",
       "142841  156796  SEA00358  377.183           Annual Member  Male  10/12/2015   \n",
       "142842  156797  SEA00399  303.330           Annual Member  Male  10/12/2015   \n",
       "142843  156798  SEA00204  165.597           Annual Member  Male  10/12/2015   \n",
       "142844  156799  SEA00073  388.576  Short-Term Pass Holder   NaN  10/12/2015   \n",
       "142845  156800  SEA00033  391.885           Annual Member  Male  10/12/2015   \n",
       "\n",
       "          天气  \n",
       "142841  Rain  \n",
       "142842  Rain  \n",
       "142843  Rain  \n",
       "142844  Rain  \n",
       "142845  Rain  "
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将合并后的数据表中的“trip_id”、“bikeid”、“usertype”、“gender”、“starttime”、“Events”6个字段分别重命名为\n",
    "# “行程id”、“共享单车id”、“用户类型”、“性别”、“日期”、“天气”\n",
    "name_dict = {\"trip_id\":\"行程id\", \"bikeid\":\"共享单车id\", \"tripduration\":\"时长\", \n",
    "                   \"usertype\":\"用户类别\", \"gender\":\"性别\", \"Date\":\"日期\", \"Events\":\"天气\"}\n",
    "# name_dict变量给出了重命名的字典，使用rename方法将df的列名修改为中文,赋值给df\n",
    "##################################begin######################################\n",
    "df = df.rename(columns=name_dict)\n",
    "###################################end#######################################\n",
    "\n",
    "# 查看最后五行数据\n",
    "df.tail()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 缺失值处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 对“天气”这一列中的缺失值使用“Sunny”进行填充\n",
    "df[\"天气\"] = df[\"天气\"].fillna(\"Sunny\")\n",
    "\n",
    "\n",
    "# 查看“天气”列中是否存在空值\n",
    "df[\"天气\"].isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务三：数据统计分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 统计使用次数最少的自行车"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "共享单车id\n",
       "SEA00012      1\n",
       "SEA00001      2\n",
       "SEA00011      5\n",
       "SEA00130      9\n",
       "SEA00378     13\n",
       "           ... \n",
       "SEA00035    403\n",
       "SEA00308    404\n",
       "SEA00141    404\n",
       "SEA00171    411\n",
       "SEA00281    411\n",
       "Name: count, Length: 482, dtype: int64"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 统计\"共享单车id\"列种各个id的出现次数，按照出现次数进行升序排列，结果赋值为count_id\n",
    "count_id = df[\"共享单车id\"].value_counts().sort_values(ascending=True)\n",
    "count_id"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "使用次数最少的单车是SEA00012, 次数是1\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_984\\2461400491.py:2: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n",
      "  print(f\"使用次数最少的单车是{count_id.index[0]}, 次数是{count_id[0]}\")\n"
     ]
    }
   ],
   "source": [
    "# 将被骑得次数最少的共享单车id及次数进行打印\n",
    "print(f\"使用次数最少的单车是{count_id.index[0]}, 次数是{count_id[0]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 分组分析"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "天气\n",
       "Fog                     976.570924\n",
       "Fog , Rain              741.844675\n",
       "Rain                   1045.690597\n",
       "Rain , Snow             833.941524\n",
       "Rain , Thunderstorm    1262.536694\n",
       "Sunny                  1301.055016\n",
       "Name: 时长, dtype: float64"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用数据表df中的“天气”作为分组对象，统计“时长”的平均值，将结果进行打印\n",
    "df.groupby(\"天气\")[\"时长\"].mean()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 任务四: 绘制图表"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 性别差异柱状图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "性别\n",
       "Male      67608\n",
       "Female    18245\n",
       "Other      1507\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df[\"性别\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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YWFhV7ye//3f/9Vvf/tbSVJkZKSGDx+u1q1bq6CgQFu3btVnn32m/Px8jRw5UqmpqWrXrp3PdU2cOFF///vf5XA4dP/99ysmJkbbt2/XP//5T0nl13y89dZb+uUvf+lWN2vWLP3xj3+UJAUEBOiee+5Rt27dVFBQoL/97W/av3+/pkyZct32Q5JKSkqUlJSkNWvWyGazqWvXrrrtttsUEBCgxo0bV1p7rVX8fV+4cKFG1+2a08hl4cKF2rFjh9c2SerevbvHny/v98QTT0iSunXrprFjx1ZrHJ9++qnuuecelZaWKjg4WHfddZc6d+6swMBA7d27V//4xz9UVFSk559/XjExMRo/fnyV6/zd736nX//615LKT7/+6Ec/Ur169fSDH/zAa//jx4+rT58+OnXqlCSpR48e+vGPfyyHw6HMzEwtXbpUp0+f1ieffKLHH39c8+bN87ntf//733r66adVUFCgHj16KDExUbm5uVq8eLGOHz+usrIyTZo0SUOHDnW7Hq6srEwjR47UqlWrJEmhoaEaM2aM2rdvrzNnzuif//yn/v3vf+vkyZMaPHiwvv32W49TkDWxH0uWLNGrr74qSQoKClJSUpI6dOggu92uAwcO6KOPPlJubq5+//vfq2/fvhoyZEiVvw9cI7WdqAB/tWnTxvxX0WeffebWFh8f7/VfT3379nXr99VXX5nz2HTv3t04c+aMx3beeecds/7+++/3aHcdoQkLCzMkGR07djSOHTvm1ue3v/2tuY5+/fq5tZ08edIICQkxpPJZjS8/glJcXGwkJSVVeoSkJvbDMNz/RT1gwABDKp/vZdeuXV771yR/jtD85je/Mfv+9Kc/rbTv1c4UPH78+CqPpFTFVT9+/Phq9b948aLRtGlTQ5LRuHFj46uvvvLo89VXXxn16tUzJBktW7Y0SkpKPPpUfE/79+9v2Gw2o379+saSJUuqNY5hw4aZR08++OADj/acnBzjtttuM48Wpaenu7VX/DyFhYUZNpvNeP311936nD592mjevLnZb9OmTW7tb775ptnWunVr49ChQ27tZWVlxgMPPGD2mTJlSo3vR8V1SN6PCH/77bdm+9ixYz3acf0QaGA5N998s/k/kJSUFLe26gaasWPHmkHC2//ELl9fWFiYxxdHxcnemjRpYpw6dcqjvri42DzUHh8f79b2yiuvmPWjR4/2uv3z588bjRo18hloamI/DMPzdEl8fLzXcHQt+BNonn76abPvE088UWlfKwaad99916x59913ffZ75JFHzH7bt2/3aL/8cRKhoaFe+3lz8OBBMyRX9gX9/vvvm+ufNWuWW9vlnydfp8defvlls8/lgaNVq1ZmGPH1yIt9+/aZ9V26dKnx/TAMw7jrrrvM9vPnz3tdx8KFC405c+YYq1ev9rkdXHuccoLl1K1b13ztmufDZcaMGcrNzTX//Pzzz3u9aDAlJUWSVFpaqrZt21a5zYsXLyo9PV3t27f32v7iiy96PR0TEhKi1q1b61//+pdKSkrc2r744gvz9aOPPup1vfXr19f999+v2bNne22v6f2Qyi+AXbhwoRo0aFDl+q63goIC87Vror3vkoqPU5gwYYImTJhQZc2uXbs8Tn9dLjk5uco+LikpKeZFsgsXLtTChQurNQZfYmJi9Nxzz3ltu+2228zXFf9+7N+/X5mZmZKkvn376tZbb/Va365dO508eVJS+emga7EfvXv31sqVKyVJs2fP1m9+8xuPC7ofeOCBKteNa49AA8up+EVWMbxI8rhO4dVXX/UINPn5+eY5dX+cPn3aaxAIDg7WmDFjfNb5us7nv//9r/m64t07l/P13KKa3g+XUaNGVfvL73qreLdWw4YNa3Ek14brlnR/nD59utL26Oho/epXv6q1MTzwwAMeYcPF19+NAwcOmK87depU6bZ93bpfU/vxi1/8QgsXLtQ333yj6dOna86cOerVq5fatWunH/7wh+rRo8d38rNoRQQaWE5sbKy2bNkiSea/4nwpLi72WJaXl2e+vvnmmzV58uRqb9ebtm3buh01qq6KF7U2a9bMZ7/IyEivy2t6P1wefvjhaq2nNlT8ouvQoUMtjuTaqPg79XYhsjdVfeE/8MADfj1eoeIYnnzySd1yyy1V1lR2sfiVPEi04hiudJblmtqPevXqadu2bXrllVe0aNEiHT58WB9++KHZHhAQoL59+yo5OVm9e/e+orGiZhBoYDkV78zYvXu3z36GYXgcwZHcj/A4HA5NmjTpqsbjK3BUpeK/TouLi1WnTh2v/XzdzVPT++Hia+bl2paVlWXO+Gyz2ar8Ireiir/Thx56SPXq1bvqdfr7+6w4hoSEBK/PsfLHlfz9qDiGquZwysvLMx9T0aBBAzO81eR+1KtXT8nJyUpOTtbJkye1d+9e7d27V5s3b9aaNWu0ceNGbd68WcuWLdM999xzxdvB1WFiPVhO//79zdcbN270ehRGKj/k7HpEQkXh4eFq0qSJpPLJ6C6/tqWio0ePatOmTdq0aZNOnDjhtU9VE6T5ctNNN5mvK5skbs+ePV6X1/R+3OgWL15sXhPRv3//Kw6SN7KKD1ndu3evz375+fnm77OqCQav1RgkacuWLdq0aZO2bdvms8+V/P2oeAq2sn+0SOXXnzVr1kzNmjVzG29N74dLs2bNlJCQoF/96ldasWKFUlNTVa9ePZWVlXlMy4Dri0ADy7n99tvN5zSdO3dOb7/9ttd+S5cu9bmOhIQESeUXmf7jH//w2W/y5Mnq37+/+vfvr7S0tKsYtacePXqYr5csWeK1T1FRkRYtWuRzHTfCflwPJ06cMOfakaTHHnusFkdz7QwcONB8/f777/vsN2/ePPP3WVm/K+H6TEnSokWLVFZW5rVfWlqa+vTpo/79+1c5V5K/2rRpo1atWkkqn6F3//79XvuVlZWZcwUFBwe7PeKkJvbj7Nmzatq0qZo2bark5GSv9T/4wQ/MR6z897//vaLr2lAzCDSwpIrTuU+dOtVj6vG9e/fq97//vc/6KVOmmP9ynDRpkte7Gz7++GPzqd4NGzZ0OzJUE8aOHavAwEBJ5ddLfP75527tJSUlevTRR3X06FGf67gR9uNaS01NVb9+/cyLuxMSEjRy5MhaHtW1cf/995sXub799tteH9nwn//8xy3c1fR7cfPNN2vYsGGSyv8e/eIXv5DT6XTrU1hY6HaK09cT76/GM888I6n8Dr577rlHGRkZbu1lZWWaMWOGeR3dkCFD3E4z1cR+REVFqaysTKdOndKCBQt09uxZj3GePn3aDFU2m+2KrqdDzeAaGljS6NGj9c9//lNLlixRUVGREhISNHr0aHXs2FH/+c9/tGDBArdbfC/XqVMn/frXv9aLL76o7OxsdevWTUOHDlX37t1VUlKinTt36pNPPjFPcfzpT3+q8WtLWrVqpaeeekq///3vVVxcrB//+McaPny4unTpoosXL2rp0qX69ttvZbfbfZ5WuxH2oybl5+frz3/+s0pKSnT69Glt2bJFW7duNcffvn17vf/++1d8mu9GV6dOHS1YsEBDhgxRaWmpHn74Yf31r3/VT37yE9WtW1f79+/Xhx9+aF4zMmHChCu66LYqf/nLX7Rjxw5lZWXp7bff1rp16zR8+HA1b95cx48f15IlS8xTl7fddpt+8Ytf1PgYHnvsMa1atUqrVq0ypxoYM2aMbr31VmVlZWnt2rXmqaSIiAi98sorNb4fNptNjz32mF588UVlZGQoPj5eiYmJateunerUqaP//ve/WrJkibKzsyVJd955Z41c94QrVItz4ABX5dKlS+bEct5+unTpYs4qfPnEeoZRPtNocnJypc9AstvtxltvveV1+xWf5VSZvn37+pw0rqSkxJgwYYLP7Tds2NCYPXu2z4n1amI/DMPz2TvX0+WTwHn7CQgIMMaNG+dzYjNvrDixnktVz3KSymdKdjqdXuu9PcvJX/v37zfatWtX6Ri6detmnDx50qO2up+nqn5HFy9erPTvuCQjOjq6ymc5Xel+GEb55JijR4+u8jPaunVrIzMzs8r3FdcOp5xgWcHBwfrggw/08ccfa+DAgYqKilJYWJg6duyoV155RV988YX5JGxvbDabpk+frr179+rxxx83b78ODQ1VmzZt9MQTT+jbb7/Vz3/+82u2D4GBgZozZ47WrVunoUOHqlGjRgoJCVF0dLR+9rOfac+ePZXOUXOj7EdNCw4OVpMmTdS9e3c999xz2rt3r95///3v5GR63tx11106fPiwkpOT1bVrV0VERCg4OFgtWrTQ6NGjtXnzZr377rs+53epCa1bt9aePXs0Z84cDRw4UI0bN1ZQUJAaNGighIQEvf/++9q6davPeWBqQp06dfTBBx9o48aNGj16tG666SYFBwfL4XCoR48eeuWVV7R3717dcccd12w/QkJC9OGHHyolJUXjxo1TmzZtVLduXQUGBioqKkp9+/bV66+/rj179igmJuZavRWoBpthVOO56QAAADcwjtAAAADLI9AAAADLI9AAAADLI9AAAADLI9AAAADLI9AAAADLI9AAAADL49EH11hZWZlOnDih8PDw7+x07QAAXAuGYSg/P1/NmzdXQEAVx2D8mVbYNYV7dX4un+Y9Ly/PmDp1qhEXF2eEhIQYrVq1Mp5//nmjqKio0m1mZWUZP//5z40WLVoYISEhRps2bYzZs2cbpaWlldYdOnTIGDt2rNG4cWPDbrcbHTt2NBYuXFjlPu7atcu45557jKioKKNOnTpGjx49jLVr11ZZ58vRo0er/Z7xww8//PDDDz+eP0ePHq3y+9avmYIHDhzo8UTgy5WWlqqkpESxsbH6z3/+I0nKzc1V3759lZaWJql8qnbXZhMSErRmzRrzqcMVHTlyRD179tSxY8c86h5++GHNnTvX6xi+/vpr9evXT3l5eR51ycnJmj59ute6tWvX6u677zafyOqqs9lsmjt3rh566KFK992b8+fPKyIiQkePHv3eTNsOAEBNyMvLU3R0tHJzc+VwOCrvfMWHHnwYMmSIIbk/EO0nP/mJIckICwsz5s+fbxQXFxtHjx41EhISDEnGK6+84rEep9Np3HbbbYYko1GjRsbHH39slJSUGOnp6UbHjh0NScbSpUs96s6dO2c0bdrUkGTExcUZW7ZsMUpLS42dO3caMTExRkBAgPHll1961B06dMioW7euIcm4/fbbjT179hilpaXGunXrjMjISKNu3bpGRkaG3+/H+fPnDUl+PVQPAAD49x1ao4Fm3bp1hlT+9NOCggLDMAxj9erV5iGjJUuWuPXPzc01IiMjjTp16hhnz551a3vzzTcNqfwpu1u3bnVrO3z4sBEUFGQ0b97cKCkpcWt75plnzPB0+PBht7bPP//ckMqfrHq5UaNGGZKM5s2be4zl/fffNyQZ9913n39viEGgAQDgStVKoCkpKTHat2/vEVyGDh1qSDI6derkte7pp582JBkffPCB2/If/OAHhiQjKSnJa93IkSMNScaWLVvMZU6n04iMjDQkGb/61a+81t1xxx2GJOPIkSPmstOnTxuBgYGGJGP27NkeNU6n02jevLlRt27dKq/5uRyBBgCAK+PPd2iN3bb9zjvv6Ntvv1WvXr103333mcu3bNkiSRo1apTXuiFDhkiS1qxZYy47d+6cvvnmG7/r9u7dq3PnzlVaN3jwYEnl18u4bN26VaWlpZKkkSNHetQEBQUpISFBBQUFVV5DBAAArr8aCTTFxcV64YUXJEkvvviiuTw7O1u5ubmSpB49enit7dChgyQpPT3dXHbo0CHztT91Bw8elCSFhISoS5cuftfFxsaqWbNm1a4DAAA3hhoJNPPnz9fJkyfVvXt39e3b11x+9uxZ83Xr1q291kZFRSk4OFgZGRkedaGhoYqOjvZa17hxY0nyWhcbG6ugIO9T7FRW52uMvuoAAMCN4aon1istLdUrr7wiSXr22Wfd2oqLi83X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AwYM0NatW1VUVKTly5ebjzXo1auXunbt6lb36KOPKiIiQhkZGUpISFBaWpoKCgr03nvv6fHHH5dU/kwnXzMJAwCA2mMzqrptx4uLFy9q0aJF+vDDD3XgwAGdPn1a9evX149+9CNNmzZNPXv2dOt/7tw59evXT2lpaZ4DsNm0ePFiM/RUlJmZqT59+rg9SNLFbrcrJSXFPMVUUWpqqhISEszHLlQUGRmp7du3q02bNh5tq1at0vDhw70+gDImJkY7d+40Zwyurry8PDkcDp0/f75Gb9tuNW1V1Z1gaZkvJVbdCQC+w/z5Dr2ih1OGhYXpZz/7mTZs2KBjx47p0qVLOnPmjD755BOPMCOVh4itW7fqySefdJu87pZbbtHKlSu9hhlJatWqlVJTUzV27Fi3uWw6d+6szZs3ew0zUvlFvqmpqbrrrrvcZhp2zWDsLcxI5aehtm3bpl69epnLbDabkpKStH37dr/DDAAAuD6u6AjN1cjPz9e+fftUv359tWvXrtp1OTk5OnDggBo1aqT4+Phq12VlZSkjI0PR0dFq0aJFteuOHDmi48ePKz4+/qqCDEdocKU4QgPg+86f71C/JtarCeHh4erWrZvfdVFRUerevbvfdU2bNlXTpk39rmvZsqU5Pw0AALixXdEpJwAAgBsJgQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFgegQYAAFie34EmLy9PgYGBstls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4uJi3XfffSooKND//M//KDHR+/n+LVu2SJJGjRrltX3IkCGSyo/kuJw7d07ffPON33V79+7VuXPnKq0bPHiwJJlHjSRp69at5pGekSNHetQEBQUpISFBBQUF+vzzz72uFwAA1J4rDjRTpkzRnj171KNHD/3ud7/z2ic7O1u5ubmS5HGUxaVDhw6SpPT0dHPZoUOHzNf+1Lmu4wkJCVGXLl38rouNjVWzZs2qXQcAAG4MVxRoli9frjfffFMNGjTQ3/72NwUFBXntd/bsWfN169atvfaJiopScHCwMjIyPOpCQ0MVHR3tta5x48aS5LUuNjbW55gqq/M1Rl91AADgxuD9W78SR44c0U9/+lPZbDa9//77atGihc++Fa83iYiI8NnP4XDozJkzKi4ult1uN+scDofPi40jIyMlSSdPnvTYXmXbqsk6b4qLi93223XrOAAAuHb8CjQlJSUaM2aMzp07p6lTp5rXsfjimlvGZrMpNDTUZ7+QkBBJUmFhoex2u1lXp06datVcvr3rVefNrFmzlJyc7LE8/Xi26uUVVVrrjxDbpRpbF25M+46dru0hAECtupCfX+2+fgWa6dOna9u2berZs6defPHFKvuHhYWVb8TH6R+XgIDyM18XL15URESEWRccHFytmsu3d73qvHn22Wc1ZcoU8895eXmKjo5W25sa1ejEepeMkBpbF25Mt7ZoXNtDAIBalZfn+2DI5aodaD777DO9/PLLatiwoZYsWVJlSJFk3v7sdDp15swZNWzY0Gs/151Jrtl8XXUnTpzwue7La2qjzhu73S673V5pHwAAULOqfVGwa1K6M2fOKDo6Wjabze2nf//+kqT//ve/5rIVK1YoPDxcku+LaS9cuKCCggJJUr169SRJLVu2lCQVFBQoOzvba11WVpZbTcW6ymb0rayusgt+vdUBAIAbQ7UDTXBwsHn0wdtPxdM1rmWBgYHm7dO7du3yut4vv/xSkhQeHi6HwyGp/IhJbGxsteoq3gXVvn171alTRwUFBT5vr/ZW5xrjwYMHle/jfJ23OgAAcGOodqCZM2eOioqKfP58+umnkqSYmBhz2bhx45SQkCBJWrJkidf1rl+/XpLUuXNnt+VXUme329W7d2+/61q2bKnWrVvL6XSaMwZXVFpaqo0bN3odJwAAqH018nDKyowdO1aBgYHavHmzVq1yf0J0dna2+aiCy2caHj9+vCRp8eLF2r17t1tbenq6li9fXmnd7Nmzdfz4cbe2DRs2mA+m9FU3c+ZMXbhwwa1twYIFOnHihAIDAzVo0KCqdxoAAFxX1zzQREdHa/To0ZKk0aNHa9GiRSosLNSuXbs0aNAg5eTkyOFw6JFHHnGr69Gjh3r27Cmn06nBgwdr9erVKi4u1saNGzV48GBdunRJcXFxGjZsmFvdiBEjFBcXp9zcXA0YMEBbt25VUVGRli9fbj7WoFevXuratatb3aOPPqqIiAhlZGQoISFBaWlpKigo0HvvvafHH39cUvkznXzNJAwAAGqPzajqtp1q2rRpk/r376+YmBiPi3LPnTunfv36KS0tzXMANpsWL15shp6KMjMz1adPH7cHSbrY7XalpKSYp5gqSk1NVUJCgvnYhYoiIyO1fft2tWnTxqNt1apVGj58uNcHUMbExGjnzp3mjMHVlZeXJ4fDofPnz9fobdutpq2quhMsLfMl789HA4DvC3++Q2vsCE2/fv1kGIbXO4wiIyO1detWPfnkk26T191yyy1auXKl1zAjSa1atVJqaqrGjh3rdpt4586dtXnzZq9hRiq/yDc1NVV33XWX20zD/fv39xlmpPLTUNu2bVOvXr3MZTabTUlJSdq+fbvfYQYAAFwfNXaEprry8/O1b98+1a9fX+3atat2XU5Ojg4cOKBGjRopPj6+2nVZWVnKyMhQdHR0pY9puNyRI0d0/PhxxcfHX1WQ4QgNrhRHaAB83/nzHer3s5yuVnh4uLp16+Z3XVRUlLp37+53XdOmTdW0aVO/61q2bGnOTwMAAG5s1/yiYAAAgGuNQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyPQAMAACyP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gIAAY/r06caxY8eMsrIy48SJE8a0adPMffj88889tukKNPfee6/Rrl07IywszEhOTjb27t1rnDlzxsjNza36jfoOIdDgqrj+smVkZBg//vGPDUnGZ599ZvzmN78xv3C8hY5Tp04Zw4YNM4YNG2Zs3brVY72PP/64Icn4xS9+Uen2qxtohg8fbkgy7rvvPq/tDz30kCHJ6NevX5X7DP9UDBq+fi7/wnjqqafMoyhlZWUe65wxY4YhyWjVqpXHdvr06WMuc4WXunXrGjk5OYZhGMaBAwfM7bp8+OGHxrBhw4z777/fKC0tddtWSUmJGbB37txZrX2tLNBkZ2eb4XrNmjUe7RcuXDDq1atnSDLmz59f6fbg29atW83f85w5c3z2a968uSHJGDhwoEfblQQaScaUKVM82l988UVDknHrrbe6Lb/99tsNScbUqVO9rrdfv35mQLqcK9DYbDYjPDzc+Ne//lXlOL/LmFgPNaZLly7asGGDUlNTzWtpunTpolOnTnn0bdy4scd1CaWlpUpPT9fmzZvNtpq4jqasrEzr1q2TJP3tb3+rdHZQ7sy6dvr27Vvt+Txc1w18+eWXlc4BlZmZqbNnz6pBgwbmsooXerom6mvXrp0iIyPdllU0evRojR492m1Zfn6+du3apeXLlys/P19SzXweN2zYoKKiIknS4MGDK+2bmpqq8ePHX/U2v4/q1atnvna9394UFxd79L8asbGxevnllz2Wu64lrPgZOn36tHmt4csvv+y1zqWy/zcZhqE33nij0usVvw8INKgxXbt2lVT+F6/iBcGrVq3y2t8wDK1du1YfffSR/vWvf2n//v26dOmSJCkwMLDGxnXmzBnz4sDg4OBKvyCdTqeKi4tlt9trbPvwX2ZmpiQpKCioys/C5YGmbt26Hn28Lbvc+fPntWDBAqWkpGjPnj06evSopP//eA+jhh5759o3SVV+zs6fP18j2/w+aty4sfk6Ozvba5+SkhLl5uZKkho2bFgj2x05cqR5oXFF3n7XFT8LISEhXmcrdnGFam86dOhgThT4fUagQY1x/etg6dKlkqSWLVuqUaNGXvsWFRUpKSlJa9euld1uV48ePdSvXz/deuut6tatm1asWKGZM2fW+BiXL1+uxMTEGl8vro0//elPevzxx6/5dnbu3KmhQ4fq9OnTatasmXr27KkHH3xQHTp0UN++fdWtWzf997//rdFtNmzY0OcXLa5e06ZN5XA4dP78eR0+fNhrn6NHj5oT6rVp06ZGtnvzzTdfUd1XX32l9u3bX1Ftp06dKg1D3xcEGtSYVq1aqWHDhjpz5oykym/X/tOf/qS1a9eqQYMG+uqrr9SyZUu39n/+8581Nq6GDRuqXr16unDhgjlr6OXy8/O1f/9+SdIPfvADjtDUslatWunf//63z9/XpUuXzNuuW7durfr161/V9saPH6/Tp09r9OjRWrhwYY0eIbyc65bfs2fPKicnR1FRUR59MjMzdebMGdWrV09t27a9ZmP5ruvRo4fWrFmjLVu2yDAMjy/9L774wnzdvXv3GtmmP88ji4mJMV8fPHjQa6A5e/asMjIyJEm33347waUSzEODGlUxxFQWaDZv3ixJ6tWrl0eYOXXqlObOnVtjYwoICNCgQYMklU+F7nQ6Pfr86U9/UteuXdWzZ0+VlZXV2LZxZYYMGSKp/Jonb6dd/va3v6lr167q2rXrVR/lOHXqlNLT0yVJ9913n0eYWbx4cY0enfnxj38su90uwzD07rvverSXlpZq4MCB6tq1q373u9/V2Ha/j0aNGiVJOnLkiDlrsEtpaan+/Oc/Syqfj8ZboKlTp46ka3fqr0mTJrr99tslSe+8847XPs8884y6du2qpKQkwkwVCDSoUdUNNA6HQ5K0adMmbd26VWVlZcrKytJbb72lH/7wh+b1CzV13cL06dNlt9uVlpamAQMGaNu2bSoqKlJeXp7mzJljTkD1yCOPmP8TQ+156qmnFBUVpaysLPXu3VuffvqpLly4oIsXL2rZsmV68sknJUk/+clPFB8ff1Xbqlu3rnnNw9tvv61Tp06ppKREu3fv1s9//nONGzfO7FsTn8eGDRvqV7/6lSTp17/+taZNm6bMzEyVlZXpP//5j+6//34dPHhQAQEBmjhx4lVv7/ts7NixuvXWWyVJEyZM0MKFC+V0OpWVlaUHH3zQnB04OTnZ67V1rrCxZMkSff311zIMQ06nU1999ZX+8pe/1MgYX3zxRdlsNq1Zs0ZJSUnas2ePnE6nzp49q9/97neaN2+eJJmPaUAlau8GK3wXqMJt24ZRPnmda9nZs2cNw/B+a/Xnn39uBAcHe518KiwszBg4cKAhyejdu3el2/dnYr1ly5aZ85dcvk3930RtFy5cuNK3Aj5c6cR6W7ZsMeei8fb76tChg5GVleWxnYpz2nj7fGRkZHjctv3zn//cbd2XT/Domqvkvffeq9a+VmdivQceeMDnNgMDA4033njDr/cL3h08eND8/Xn7HD322GM+awsLC40OHTq4/V5cr3/4wx+69a3qd79x40ZDkhETE+PR9sYbb7it+/Ix3n///UZJSYlHXcWJ9WAYHKFBjXLd6RQXF+f12gCX3r1768svv9TIkSN10003KTg4WDExMfrZz36mtLQ0TZ48WZK0bds2t+dDXY17771X33zzjX7xi18oPj5ewcHBqlevnnr06KE5c+YoJSWlWnfD4Pro1auXvv32Wz3zzDNq166dQkNDVadOHXXu3Fmvvvqqdu7cqSZNmtTItv7yl7/o3XffVbdu3eRwOBQWFqYuXbroj3/8o7Zs2aIf/ehHkqQ333yzRp7KHBgYqIULF+qf//ynhgwZooYNGyowMFBNmzbV6NGjtWPHDv5FXkNuvvlmffPNN5o2bZratGkju92uiIgI9e/fX0uXLtVf//pXn7WhoaH6/PPPNWXKFLVq1Uo2m012u11t27bVfffdV2NjnDRpknbt2qUHH3xQ0dHRCgoKksPh0J133qmPPvpIixYtuqbXdX1X2Ayjho7pAwAA1BKO0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMsj0AAAAMv7f/5xKPoZ8rL1AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 600x800 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 设置画布大小为6*8\n",
    "fig, ax = plt.subplots(figsize=(6,8))\n",
    "# 统计性别的计数\n",
    "count_gender = df[\"性别\"].value_counts()\n",
    "# 画性别统计条形图，数据count_gender的index属性为性别类型，values属性为性别计数\n",
    "##################################begin######################################\n",
    "plt.bar(count_gender.index, count_gender.values)\n",
    "###################################end#######################################\n",
    "\n",
    "# 设置柱状图的标题为\"Gender Differences\"\n",
    "plt.title(\"Gender Differences\")\n",
    "plt.xlabel(\"\")\n",
    "plt.ylabel(\"\")\n",
    "\n",
    "ax.yaxis.grid(linewidth=0.5, color=\"#3c7f99\",alpha=0.3)\n",
    "plt.show()\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
